/*
    springmvc框架:springmvc是一种web层mvc框架，它是spring的一个模块，拥有spring的特性。springmvc分离了控制器、模型对象、分派器以及处理程序对象的角色。
              SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色，这种分离让它们更容易进行定制。eg：对比之前的servlet代码更简便，会自动完成servlet中需要手动去创建的内容

    Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。


    SpringMVC运行原理

1、 客户端请求提交到DispatcherServlet

2、 由DispatcherServlet控制器查询一个或多个HandlerMapping，找到处理请求的Controller

3、 DispatcherServlet将请求提交到Controller

4、 Controller调用业务逻辑处理后，返回ModelAndView

5、 DispatcherServlet查询一个或多个ViewResoler视图解析器，找到ModelAndView指定的视图

6、 视图负责将结果显示到客户端


controller层
    1.controller层中类中的 @RequestMapping("/请求的页面action")作用：当以action为请求标识的页面发送请求时，对应的@RequestMapping注解
                                                            会将该页面的请求映射到 MVC 和 REST 控制器的处理方法上进行处理，
                                                            每个@RequestMapping通过action来区分不同页面的请求，通过不同的
                                                            方法进行页面的操作和跳转
    2.只要页面发出请求，就会到controller层中去找对应的@RequestMapping


springmvc各层之间的调用： bean层配置数据库的数据
                        dao层中的方法也mapper层中对数据库进行的操作是一一对应的（id=方法名），从而service层就可以调用dao层的这些方法
                        调用dao层中的方法进行登录验证业务逻辑处理，通过service类中的方法去调用bao层接口中的方法，并返回结果
                        调用service层进行业务逻辑处理，通过service类中方法的返回结果去对页面进行调用


ssm框架整合学习：自定义数据类型转换器、文件上传、ajax处理


一、自定义数据类型转换器：前台页面将日期传入后，是String类型，后台实体类映射的是date类型，所以需要进行数据转换，需要自定义一个类型转化器
                   在converter层定义数据转换

二、文件上传：
           步骤：1. 获取服务器上的项目的根目录地址
                 2. 把要上传的文件的目录放在静态资源解析的文件夹中，以便以后使用,需要进行文件拼接
                 3. 创建目录：判断这个要上传文件的存放目录是否存在，如果不存在，则创建这个目录，然后在上传文件（先有目录再有文件）
                 4. 获取原文件的文件后缀
                 5. 为原文件生成一个新的文件名
                 6. 将重新命名的文件转化为文件流
                 7. 将文件流进行上传

    文件上传的优化：创建一个MyUtils类，定义一个方法来代替在controller层类中定义的代码，在controller层直接调用方法来执行文件上传

三、jQuery与JavaScript与ajax三者的区别与联系：
        简单总结：
                1、JS是一门前端语言。
                2、Ajax是一门技术，它提供了异步更新的机制，使用客户端与服务器间交换数据而非整个页面文档，实现页面的局部更新。
                3、jQuery是一个框架，它对JS进行了封装，使其更方便使用。jQuery使得JS与Ajax的使用更方便

        关系比喻：
                若把js比作木头，那么jquery就是木板（半成品）
                jQuery与ajax都是js的一个框架，各有各的功能，若js是父亲的话，jquery与ajax就是两个儿子

        jquery是Javascrīpt的一种框架
        ajax是一种技术
        jquery可以实现ajax这种技术


ajax的应用：ajax的请求、ajax的增、删、改、查


ajax处理：ajax 主要是实现页面和 web 服务器之间数据的异步传输，Ajax 是一种在无需重新加载整个网页的情况下，能够更新部分网页的技术。
             通过在后台与服务器进行少量数据交换，Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下，对网页的某部分进行更新。
             传统的网页(不使用 Ajax)如果需要更新内容，必须重载整个网页页面。

1.ajax查询：用户通过前台页面输入要查询信息，将数据传到后台以后，通过和数据库中的数据匹配进行查询，若一样，则将数据返回的前台页面显示

        使用假分页插件：若显示的数据过多，可通过分页进行显示
            步骤：1.在static中的plugins文件中建立Pagination2.1.5文件，从pagination.js.org/dist/2.1.5/pagination.min.js页面ctrl+s
                    保存到给文件中
                 2.在UserInfoAjaxQuery.jsp中设置分页的代码

2.ajax查询：使用模态框动态添加用户信息

ajax 优点：
   使用Ajax的最大优点，就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作，并避免了在网络上发送那些没有改变的信息。
   Ajax不需要任何浏览器插件，但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样，Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。
   随着Ajax的成熟，一些简化Ajax使用方法的程序库也相继问世。同样，也出现了另一种辅助程序设计的技术，为那些不支持JavaScript的用户提供替代功能。

   jquery实现ajax的操作（框架）：
   语法格式：
    $.ajax({
                type: "POST", // 请求方式
                url: "ajaxdemo", // 用于向controller层发送请求的页面标志
                data: "userName=admin&userAddress=天津", // post请求的数据参数（该参数会传到UserAjaxController类中的方法中）
                datatype: "json", // 服务器响应的内容类型（json类型）
                success: function (data) { // ajax请求成功时的回调函数
                    // 这里是进行ajax业务逻辑处理的地方
                    // 执行ajax引擎的回调处理，这里是用来进行业务逻辑处理的【类似 thread 类的 run 方法； 类似于 servlet的service方法】
                    $("#ajaxdemo-label").html(data);
                },
                error: function () {
                    //ajax请求发生非错误时的回调函数
                }
            });


    自我总结：
        网页要执行某些操作时，要用onclick连接到定义的函数上（jQuery和ajax），在通过java代码(后台)去执行这个函数

 */
public class DiJi {
}
